/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ec.edu.espe.distribuidas.ejemplomaven.web;

import ec.edu.espe.distribuidas.aseguradora.modelo.CuentaSiniestro;
import ec.edu.espe.distribuidas.aseguradora.modelo.DetCuentaSiniestro;
import ec.edu.espe.distribuidas.aseguradora.modelo.Poliza;
import ec.edu.espe.distribuidas.aseguradora.modelo.Siniestro;
import ec.edu.espe.distribuidas.aseguradora.servicio.CuentaSiniestroServicio;
import ec.edu.espe.distribuidas.aseguradora.servicio.PolizaServicio;
import ec.edu.espe.distribuidas.aseguradora.servicio.SiniestroServicio;
import ec.edu.espe.distribuidas.aseguradora.web.util.BotonesBean;
import ec.edu.espe.distribuidas.aseguradora.web.util.MensajesGenericos;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import org.apache.commons.beanutils.BeanUtils;

/**
 *
 * @author pacodell
 */
@ManagedBean
@ViewScoped
public class ReclamoPendienteBean extends BotonesBean{
         @EJB
    private SiniestroServicio siniestroServicio;
         @EJB
    private CuentaSiniestroServicio cuentasiniestroServicio;
    private List<Siniestro> siniestrosPendientes;
    private Siniestro siniestroSeleccionado;
    private Siniestro siniestro;
    private List<DetCuentaSiniestro> listaDetalle;
    private List<CuentaSiniestro> cuentasPorSiniestro;
    private Poliza poliza;
    @EJB
    private PolizaServicio polizaServicio;
    @PostConstruct
     @Override
    public void postConstructor(){
        this.siniestrosPendientes= siniestroServicio.ObtenerPendientes();
    }
public void filaSeleccionada(ActionEvent evento) {
        if (siniestroSeleccionado instanceof Siniestro) {
            super.seleccionadoUno();
        } else {
            super.sinSeleccion();
        }
    }
public void revision()
{
    this.listaDetalle= new ArrayList<DetCuentaSiniestro>();
      
        try {
            this.siniestro = new Siniestro();
            BeanUtils.copyProperties(this.siniestro, this.siniestroSeleccionado);
            super.modificar();
            this.poliza=this.polizaServicio.buscarPorCliente(siniestro.getCodCliente().getCodCliente().toString()).get(0);
            this.cuentasPorSiniestro= this.cuentasiniestroServicio.BuscarPorSiniestro(""+siniestro.getCodSiniestro());
            for(CuentaSiniestro cuenta: cuentasPorSiniestro)
            {
                
            this.listaDetalle.addAll(cuenta.getDetCuentaSiniestroList());
            }
            
        } catch (IllegalAccessException | InvocationTargetException e) {
            MensajesGenericos.errorCopyProperties();
        }
}
public String guardar()
{
    this.siniestroServicio.modificar(siniestro);
    return "inicio.jsf"; 
}
public String cancelar()
{
    return "reclamoPendiente.xhtml.jsf"; 
}
    public List<Siniestro> getSiniestrosPendientes() {
        return siniestrosPendientes;
    }

    public void setSiniestrosPendientes(List<Siniestro> siniestrosPendientes) {
        this.siniestrosPendientes = siniestrosPendientes;
    }

    public Siniestro getSiniestroSeleccionado() {
        return siniestroSeleccionado;
    }

    public void setSiniestroSeleccionado(Siniestro siniestroSeleccionado) {
        this.siniestroSeleccionado = siniestroSeleccionado;
    }

    public List<DetCuentaSiniestro> getListaDetalle() {
        return listaDetalle;
    }

    public void setListaDetalle(List<DetCuentaSiniestro> listaDetalle) {
        this.listaDetalle = listaDetalle;
    }

    public Poliza getPoliza() {
        return poliza;
    }

    public void setPoliza(Poliza poliza) {
        this.poliza = poliza;
    }

    public Siniestro getSiniestro() {
        return siniestro;
    }

    public void setSiniestro(Siniestro siniestro) {
        this.siniestro = siniestro;
    }
    
}
